/*
 * @Author: fhw
 * @Date: 2022-07-26 10:13:58
 * @LastEditors: Please set LastEditors
 * @LastEditTime: 2023-02-20 11:46:02
 * @Description:
 */
'use strict';

import { HttpException, HttpStatus } from '@nestjs/common';
/** 是否中文 */
export function isChinese(temp) {
  if (/.*[\u4e00-\u9fa5]+.*$/.test(temp)) {
    return true;
  }
  return false;
}
/** 报错 */
export function throwHttp(message: string) {
  throw new HttpException(
    {
      status: HttpStatus.BAD_REQUEST,
      message: message,
    },
    HttpStatus.BAD_REQUEST,
  );
}
export interface StatusCode {
  status: 400 | 200;
  message: string;
  success: boolean;
}
/** 错误状态 */
export function errorState(message: string): StatusCode {
  return {
    status: 400,
    message,
    success: false,
  };
}
/** 成功状态 */
export function successState(message: string): StatusCode {
  return {
    status: 200,
    message,
    success: true,
  };
}
interface Pagination {
  pageSize: number;
  pageNum: number;
}
/** 分页处理 */
export function getPagination({
  pageSize = 10,
  pageNum = 1,
}: Pagination): Pagination {
  const size = Number(pageSize) ?? 10;
  if (pageNum !== 0) {
    pageNum -= 1;
  }
  return {
    pageSize: size,
    pageNum,
  };
}
/**
 * 校验密码
 * @param {string} value 密码
 * @param {Function} callback 回调
 * @returns
 */
export function checkPassword(value: string) {
  let level = '';
  // 校验是数字
  const regex1 = /^\d+$/;
  // 校验字母
  const regex2 = /^[A-Za-z]+$/;
  // 校验符号
  const regex3 =
    /^[`~!@#$%^&*()_\-+=<>?:"{}|,./;'\\[\]·~！@#￥%……&*（）——\-+={}|《》？：“”【】、；‘'，。、]+$/;
  if (regex1.test(value)) {
    level = '低';
  } else if (regex2.test(value)) {
    level = '低';
  } else if (regex3.test(value)) {
    level = '低';
  } else if (/^[A-Za-z\d]+$/.test(value)) {
    level = '中';
  } else if (
    /^[`~!@#$%^&*()_\-+=<>?:"{}|,./;'\\[\]·~！@#￥%……&*（）——\-+={}|《》？：“”【】、；‘'，。、\d]+$/.test(
      value,
    )
  ) {
    level = '中';
  } else if (
    /^[`~!@#$%^&*()_\-+=<>?:"{}|,./;'\\[\]·~！@#￥%……&*（）——\-+={}|《》？：“”【】、；‘'，。、A-Za-z]+$/.test(
      value,
    )
  ) {
    level = '中';
  } else if (
    /^[`~!@#$%^&*()_\-+=<>?:"{}|,./;'\\[\]·~！@#￥%……&*（）——\-+={}|《》？：“”【】、；‘'，。、A-Za-z\d]+$/.test(
      value,
    )
  ) {
    level = '高';
  }
  return level;
}
